<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>



  <script>

    /*只有函数可以制造作用域结构，那么只要是代码，就至少有一个作用域，即全局作用域。
    凡是代码中有函数，那么这个函数就构成另一个作用域，如果函数中还有函数，那么这个作用域中就又可以诞生一个作用域。
    
    将这样所有作用域列出来，可以有一个结构：函数内指向函数外的链式结构，就称作作用域链。
    */

    var a = 1;
    function f1() {
      function f2() {
        function f3() {
          /*var a=4;
          当函数中使用某个变量时，优先在自己的作用域中查找
          如果找不到，就会向上一层作用域查找
          如果找不到继续往上一层查找 ，知道全局作用域
          如果还是找不到直接报错
          这就是  作用域链
          */
          console.log(a);;
        }
        f3();
      }
      f2();
    }
    f1();



    /*输出横线*/
    function writeLine(n, tip) {
      var line = '';
      for (var i = 0; i < n; i++) {
        if (i == parseInt((n / 2))) {
          line += tip + '-';
        }
        else {
          line += '-';
        }
      }
      return line;
    }
  </script>
</body>

</html>